/*
 * @Author: 大D
 * @email: 857216393@qq.com
 * @Date: 2023-12-25 14:58:41
 * @Description:实例化http请求
 */
import { AxiosClass } from './axios';
import type { IAxiosRequestConfig } from '@/apis/request/type';

// 实例化一个axios请求
const axios = new AxiosClass({
  baseURL: import.meta.env.VITE_VUE_BASE_URL + '/api',
  timeout: import.meta.env.VITE_VUE_TIME_OUT
  // 根据需要判断是否需要添加实例拦截器
  // interceptors: {
  //   request(config) {
  //     return config;
  //   },
  //   requestCatch(error) {
  //     return error;
  //   },
  //   response(res) {
  //     return res;
  //   },
  //   responseCatch(error) {
  //     return Promise.reject(error);
  //   }
  // }
});
const http = <T>(config: IAxiosRequestConfig): Promise<T> => axios.request(config);
export default http;
export const httpDelete = <T>(config: IAxiosRequestConfig): Promise<T> => axios.delete(config);
export const httpGet = <T>(config: IAxiosRequestConfig): Promise<T> => axios.get(config);
export const httpPost = <T>(config: IAxiosRequestConfig): Promise<T> => axios.post(config);
export const httpPut = <T>(config: IAxiosRequestConfig): Promise<T> => axios.put(config);
export const httpPatch = <T>(config: IAxiosRequestConfig): Promise<T> => axios.patch(config);
